﻿using System;
using System.Collections.Generic;

namespace YJKExcelFormTool.DataDefine
{
	public class MaterialProgramInfos
	{
		public MaterialProgramInfos.BasicInfo ProgramInfo
		{
			get
			{
				return this.m_BasicInfo;
			}
		}

		public string Name
		{
			get
			{
				return this.m_BasicInfo.m_Name;
			}
			set
			{
				this.m_BasicInfo.m_Name = value;
			}
		}

		public string Describe
		{
			get
			{
				return this.m_BasicInfo.m_Describe;
			}
			set
			{
				this.m_BasicInfo.m_Describe = value;
			}
		}

		public string Id
		{
			get
			{
				return this.m_BasicInfo.m_Id;
			}
			set
			{
				this.m_BasicInfo.m_Id = value;
			}
		}

		public TableInfos TableInfos
		{
			get
			{
				return this.m_TableInfos;
			}
			set
			{
				this.m_TableInfos = value;
			}
		}

		public List<MaterialProgramInfos.StatisticalCategory> StatisticalCategoryList
		{
			get
			{
				return this.m_StatisticalCategoryList;
			}
			set
			{
				this.m_StatisticalCategoryList.Clear();
				this.m_StatisticalCategoryList = value;
			}
		}

		public List<MaterialProgramInfos.FilterType> FilterTypeList
		{
			get
			{
				return this.m_FilterTypeList;
			}
			set
			{
				this.m_FilterTypeList.Clear();
				this.m_FilterTypeList = value;
			}
		}

		public MaterialProgramInfos()
		{
		}

		public MaterialProgramInfos(MaterialProgramInfos materialProgramInfos)
		{
			this.m_BasicInfo = materialProgramInfos.m_BasicInfo;
			this.m_TableInfos = materialProgramInfos.m_TableInfos;
			this.m_StatisticalCategoryList = materialProgramInfos.m_StatisticalCategoryList;
			this.m_FilterTypeList = materialProgramInfos.m_FilterTypeList;
		}

		public MaterialProgramInfos(string name, string describe, string id, TableInfos tableInfos, List<MaterialProgramInfos.StatisticalCategory> statisticalCategoryList, List<MaterialProgramInfos.FilterType> filterTypeList)
		{
			this.m_BasicInfo.m_Name = name;
			this.m_BasicInfo.m_Describe = describe;
			this.m_BasicInfo.m_Id = id;
			this.m_TableInfos = tableInfos;
			this.m_StatisticalCategoryList = statisticalCategoryList;
			this.m_FilterTypeList = filterTypeList;
		}

		private MaterialProgramInfos.BasicInfo m_BasicInfo;

		private TableInfos m_TableInfos = new TableInfos();

		private List<MaterialProgramInfos.StatisticalCategory> m_StatisticalCategoryList = new List<MaterialProgramInfos.StatisticalCategory>();

		private List<MaterialProgramInfos.FilterType> m_FilterTypeList = new List<MaterialProgramInfos.FilterType>();

		public enum _Tag_TemplateType
		{
			TT_FAMILY,
			TT_EXCEL
		}

		public struct BasicInfo
		{
			public string m_Name;

			public string m_Describe;

			public string m_Id;
		}

		public struct StatisticalCategory
		{
			public string m_Name;

			public bool m_Checked;
		}

		public struct FilterType
		{
			public string m_Type;

			public string m_Condition;

			public string m_Value;
		}
	}
}
